/*$(function(){
	getnonreusable_signature('basicprofile.jpg');
	
})*/
          
          
          
          
         // var myFolder = '/';//需要操作的目录
            var cos;
            var folder = '';
            var bucket = '';           
            var region = '';
            var appid = '';            
            //获取单次签名
        /*function getnonreusable_signature(file_name){
          baseAjax('other/upload/create_nonreusable_signature','GET',{file_name:file_name},function(res){
                        var data = res.data;
                        folder = data.folder.toString();
                        bucket = data.bucket.toString();
                        cos = new CosCloud({
                            appid: data.appid.toString(),// APPID 必填参数
                            bucket: bucket,//bucketName 必填参数
                            region: data.region.toString(),//地域信息 必填参数 华南地区填gz 华东填sh 华北填tj
                            getAppSign: function (callback) {//获取签名 必填参数
                                //下面简单讲一下获取签名的几种办法，签名请做一次 url encode
                                //1.搭建一个鉴权服务器，自己构造请求参数获取签名，推荐实际线上业务使用，优点是安全性好，不会暴露自己的私钥
                                // $.ajax('SIGN_URL').done(function (data) {
                                //     var sig = data.sign.toString();
                                //     callback(sig);
                                // });


                                //2.直接在浏览器前端计算签名，需要获取自己的accessKey和secretKey, 一般在调试阶段使用
                                // var self = this;
                                // var random = parseInt(Math.random() * Math.pow(2, 32));
                                // var now = parseInt(new Date().getTime() / 1000);
                                // var e = now + 600; //签名过期时间为当前+600s
                                // var path = '';//多次签名这里填空
                                // var str = 'a=' + self.appid + '&k=' + sid + '&e=' + e + '&t=' + now + '&r=' + random +
                                //         '&f=' + path + '&b=' + self.bucket;

                                // var sha1Res = CryptoJS.HmacSHA1(str, skey);//这里使用CryptoJS计算sha1值，你也可以用其他开源库或自己实现
                                // var strWordArray = CryptoJS.enc.Utf8.parse(str);
                                // var resWordArray = sha1Res.concat(strWordArray);
                                // var res = resWordArray.toString(CryptoJS.enc.Base64);

                                // setTimeout(function () {//setTimeout模拟一下网络延迟的情况
                                //     callback(res);
                                // }, 1000);


                                //3.直接复用别人算好的签名字符串, 一般在调试阶段使用
                                callback(data.appsign.toString())


                            }// ,
                            // getAppSignOnce: function (callback) {//单次签名，参考上面的注释即可
                            //     var self = this;
                            //     var random = parseInt(Math.random() * Math.pow(2, 32));
                            //     var now = parseInt(new Date().getTime() / 1000);
                            //     var e = 0; //单次签名 expire==0
                            //     var path = self.path;
                            //     var str = 'a=' + self.appid + '&k=' + sid + '&e=' + e + '&t=' + now + '&r=' + random +
                            //             '&f=' + path + '&b=' + self.bucket;

                            //     var sha1Res = CryptoJS.HmacSHA1(str, skey);//这里使用CryptoJS计算sha1值，你也可以用其他开源库或自己实现
                            //     var strWordArray = CryptoJS.enc.Utf8.parse(str);
                            //     var resWordArray = sha1Res.concat(strWordArray);
                            //     var res = resWordArray.toString(CryptoJS.enc.Base64);

                            //     setTimeout(function () {//setTimeout模拟一下网络延迟的情况
                            //         callback(res);
                            //     }, 1000);
                            // }
                        });
                    
               
            })
			}*/
			
			
			 //特别注意: JS-SDK使用之前请先到console.qcloud.com/cos 对相应的Bucket进行跨域设置
	 baseAjax('other/upload/create_reusable_signature','GET',{},function(s){
            	var ores = s.data;
			    folder = ores.folder.toString();
			    bucket = ores.bucket.toString();
			    region=ores.region.toString();
			    appid=ores.appid.toString();		 
             cos = new CosCloud({
                appid: appid, // APPID 必填参数
                bucket: bucket, // bucketName 必填参数
                region: region, // 地域信息 必填参数 华南地区填gz 华东填sh 华北填tj
                getAppSign: function (callback) {//获取签名 必填参数

                    // 方法一（推荐线上使用）：搭建鉴权服务器，构造请求参数获取签名，推荐实际线上业务使用，优点是安全性好，不会暴露自己的私钥
                    // $.get('../server/auth.php', callback);

                    // 方法二（前端调试使用）：直接在浏览器前端计算签名，需要获取自己的accessKey和secretKey, 一般在调试阶段使用
                    /*var self = this;
                    var random = parseInt(Math.random() * Math.pow(2, 32));
                    var now = parseInt(Date.now() / 1000);
                    var e = now + 600; //签名过期时间为当前+600s
                    var path = ''; //多次签名这里填空
                    var str = 'a=' + self.appid + '&k=' + sid + '&e=' + e + '&t=' + now + '&r=' + random + '&f=' + path + '&b=' + self.bucket;
                    var sha1Res = CryptoJS.HmacSHA1(str, skey); // 这里使用CryptoJS计算sha1值，你也可以用其他开源库或自己实现
                    var strWordArray = CryptoJS.enc.Utf8.parse(str);
                    var resWordArray = sha1Res.concat(strWordArray);
                    var res = resWordArray.toString(CryptoJS.enc.Base64);

                    callback(res);*/
                   baseAjax('other/upload/create_reusable_signature','GET',{},function(res){
                    	folder = res.data.folder.toString();
                   		 callback(res.data.appsign.toString());
					})

                },
                getAppSignOnce: function (callback) {//单次签名，参考上面的注释即可

                    // 方法一（推荐线上使用）：搭建鉴权服务器，构造请求参数获取签名，推荐实际线上业务使用，优点是安全性好，不会暴露自己的私钥
                    // $.get('../server/auth.php', {path: self.path}, callback);

                    // 方法二（前端调试使用）：直接在浏览器前端计算签名，需要获取自己的accessKey和secretKey, 一般在调试阶段使用
                   /* var self = this;
                    var random = parseInt(Math.random() * Math.pow(2, 32));
                    var now = parseInt(Date.now() / 1000);
                    var e = 0; // 单次签名 expire==0
                    var path = self.path;
                    var str = 'a=' + self.appid + '&k=' + sid + '&e=' + e + '&t=' + now + '&r=' + random + '&f=' + path + '&b=' + self.bucket;
                    var sha1Res = CryptoJS.HmacSHA1(str, skey); // 这里使用CryptoJS计算sha1值，你也可以用其他开源库或自己实现
                    var strWordArray = CryptoJS.enc.Utf8.parse(str);
                    var resWordArray = sha1Res.concat(strWordArray);
                    var res = resWordArray.toString(CryptoJS.enc.Base64);

                    callback(res);*/

                }
            });
		})
        
         
            var successCallBack = function (result) {            	
               uploadAffter(true);
                
            };

            var errorCallBack = function (result) {
                result = result || {};    
                if($("#js-file").attr('onfunction') == 0||$("#js-file").attr('onfunction') == 1) {
	                if($("#loadimground").is(":hidden")){
						$("#loadimground").hide();
						$("#load p").html('loading');
					}
                	$.alert('上传失败', "提示");
                }
                uploadAffter(false);
            };

            var progressCallBack = function (curr, sha1) {
                if($("#js-file").attr('onfunction') == 0||$("#js-file").attr('onfunction') == 1) {
                	var sha1CheckProgress = ((sha1 * 100).toFixed(2) || 100) + '%';
	                var uploadProgress = ((curr || 0) * 100).toFixed(2);	               
	               if(uploadProgress<99){
	               	$("#load p").html(uploadProgress+'%');
	               }
                }
                
            };

            var lastTaskId;
            var taskReady = function (taskId) {
                lastTaskId = taskId;
            };
  			//分片上传文件,当选择大于20M大小的文件的时候用分片上传
            var taskId = 0;    
            
           $('#js-file').off('change').on('change', function (e) {
           	  var arr=document.getElementById("js-file").files;           	 
           	  for(var i=0; i<arr.length; i++){           	  	
           	  	filesArr.push(arr[i])
           	  }
           	  uploadtoCOS();
               $('#form')[0].reset();
               return false;
            });
    		
          
 
  //图片上传到腾讯云
  var filesArr=[];//存储选择的文件
  var filesError=new Object;//存储上传失败的文件
  var notifyimg=[];//存储上传成功的图片文件的信息 
  var folderName//临时的name
  function uploadtoCOS(){  	
	  	for(i = 0; i< filesArr.length; i ++) {           
	  	  var file = filesArr[i];
			if (file) {
				var imgname=getNowFormatDate()+'.'+file.name.substring(file.name.lastIndexOf(".")+1).toLowerCase();
				folderName=folder + imgname;
				if (file.size > 1024 * 1024) {
					taskId = cos.uploadFile(successCallBack, errorCallBack, progressCallBack, bucket, folderName, file, 0, taskReady);//insertOnly==0 表示允许覆盖文件 1表示不允许
				}else{
					// 分片上传过程可能会有 op=upload_slice_list 的 POST 请求返回 404，不会影响上传：https://github.com/tencentyun/cos-js-sdk-v4/issues/16
					cos.uploadFile(successCallBack, errorCallBack, progressCallBack, bucket,folderName, file, 0, taskReady);//insertOnly==0 表示允许覆盖文件 1表示不允许
				}
				//getnonreusable_signature(imgname);
				var img_url= getObjectURL(file);
				var li='<li class="weui-uploader__file weui-uploader__file_status" name="'+folderName+'">'+
						               	'<div class="upload_img" style="background-image:url('+img_url+')" src="'+img_url+'"></div>'+
						               	'<div class="weui-uploader__file-content la-ball-beat la-sm"><i></i><i></i><i></i> </div>'+
					              	 '</li>';				                
			
				if($("#js-file").attr('onfunction') == 0||$("#js-file").attr('onfunction') == 1) {
					$("#singerFiles").prepend(li);
				}else if($("#js-file").attr('onfunction') == 3) {
					$("#uploaderFiles").prepend(li);
				}
				if(!$(".nextbtn").hasClass("disablebtn")){
					$(".nextbtn").addClass("disablebtn");
				}
				if(!$("#uploaderInput").hasClass("disablebtn")){
					$("#uploaderInput").addClass("disablebtn");
				}	
				
			}
	  		break;
	  	}
  	
 	 }
 
 
 //得到图片的blob对象
 function getObjectURL(file) {
	var url = null ;
	if (window.createObjectURL!=undefined) { // basic
	url = window.createObjectURL(file) ;
	} else if (window.URL!=undefined) { // mozilla(firefox)
	url = window.URL.createObjectURL(file) ;
	} else if (window.webkitURL!=undefined) { // webkit or chrome
	url = window.webkitURL.createObjectURL(file) ;
	}
	return url ;
	}
 
 //得到图片的宽高
/*function getnatural(src) {
	var natural=new Object;
    var image = new Image()
    image.src = src;
    natural.width = image.width;
    natural.height = image.height;
    return natural
}*/

function getnatural(src) {	
    var image = new Image()
    image.src = src;
    image.onload=function(){	  
	   var imgeObj={ width:image.width,height:image.height,image_url:folderName, quality: getquality(image.width,image.height)};
	 	notifyimg.push(imgeObj);
	 	filesError[folderName]=filesArr[0];
 		if(filesArr.length>0){ 		
 			filesArr.splice(0,1); 
 		}
 		if(filesArr.length>0){ 	
	 		uploadtoCOS();
	 	}else{
	 		//上传完毕通知
	 		notify();
	 	}
    }
}






 
 //上传完毕后
 function uploadAffter(flag){
 	if(flag){
 		var TempItem; 	
	 	if($("#js-file").attr('onfunction') == 0||$("#js-file").attr('onfunction') == 1) {
			TempItem=$('#singerFiles li[name="'+folderName+'"]').find(".upload_img");
		}else if($("#js-file").attr('onfunction') == 3) {		
			TempItem=$('#uploaderFiles li[name="'+folderName+'"]').find(".upload_img");
		}
		var natural=getnatural(TempItem.attr("src"));	
	 	
 	}else{
 		if(filesArr.length>0){
 			filesError[folderName]=filesArr[0];
 		}
 		if(filesArr.length>0){ 	
	 		uploadtoCOS();
	 	}else{
	 		//上传完毕通知
	 		notify();
	 	}
 	}	
 	
 	
 	
 }
 
 
 
 
function getNowFormatDate() {//获取当前时间 精确到秒
    var date = new Date();
   /* var seperator1 = "-";
    var seperator2 = ":";*/
    var month = date.getMonth() + 1;
    var strDate = date.getDate();
    if (month >= 1 && month <= 9) {
        month = "0" + month;
    }
    if (strDate >= 0 && strDate <= 9) {
        strDate = "0" + strDate;
    }
    /*var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
            + " " + date.getHours() + seperator2 + date.getMinutes()
            + seperator2 + date.getSeconds()+ seperator2+date.getMilliseconds();*/
    var currentdate = date.getFullYear().toString() +  month.toString() + strDate.toString()
            + date.getHours().toString() +date.getMinutes().toString()
            +  date.getSeconds().toString()+date.getMilliseconds().toString();
    return currentdate+Math.ceil(Math.random()*10);
    
} 
   

  function getquality(w,h){
  	var $scale=(w/h).toFixed(3);
  	var quality;
  	  if(w < 900 || h < 900) {
  	  	quality=2;
  	  }else if($scale <= 0.55 || $scale >= 1.8){
      	quality=1;
      }else {
      	quality=0;
      }
  	return quality;
  }
           
//上传完毕通知
function notify(){
	if(notifyimg.length>0){
		$.ajax({
			url: baseUrl + 'other/upload/notify',
			type: 'POST',
			dataType: "json",
			data: {
				user_id: user_id,
				platform: 1,
				work_id: work_id,
				images: JSON.stringify(notifyimg)
			},
			success: function(res) {
				//baseAjax('other/upload/notify','POST',{user_id:user_id,platform:1,work_id:work_id,images:JSON.stringify(successimages)},function(res){
				if(res.code != 200) {
					$.alert(res.description, "提示");
					if($("#loadimground").is(":hidden")){
						$("#loadimground").hide();
						$("#load p").html('loading');
					}
					notifyError();
				} else {					
					//上传通知完毕
					notifyafter(res.data);
					
					
				}
				
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				if(XMLHttpRequest.status == 0) {
					$.alert('上传失败', "提示");
					if($("#loadimground").is(":hidden")){
						$("#loadimground").hide();
						$("#load p").html('loading');
					}
				} else {
					$.alert(XMLHttpRequest.status, "提示");
					if($("#loadimground").is(":hidden")){
						$("#loadimground").hide();
						$("#load p").html('loading');
					}
		
				}
				notifyError();
			}
		});
	
	}
}
//上传通知成功完毕
function notifyafter(notifydata){
	var ele;
	if($("#js-file").attr('onfunction') == 0||$("#js-file").attr('onfunction') == 1) {			
		ele="singerFiles";
	}else if($("#js-file").attr('onfunction') == 3) {
		ele="uploaderFiles";				
		var mulitImg=new Array;
		
	}
	
	for(var i=0; i<notifydata.length; i++){	
			var res=notifydata[i];
		if(res.id!=0){//上传成功		
			for(var k=0; k<notifyimg.length; k++){
				var nofyurl=notifyimg[k].image_url;
				var image_url= res.image_url+imgsize_str; 
				if(res.image_url.indexOf(nofyurl)>=0){
					var item=$('#'+ele+' li[name="'+nofyurl+'"]');
						item.find(".la-ball-beat").remove();					
						if(res.quality!=0){//照片的一边小于900    照片像素过低可能导致，图片模糊   0=正常；1=比例不符合；2=像素不符合//照片的一边小于900    照片像素过低可能导致，图片模糊
							item.append('<div class="upload_i_worn"><i class="weui-icon-warn"></i> </div>');
						}
						
						item.find(".upload_img").attr("src",image_url);
						item.find(".upload_img").attr("image_id",res.id);
						item.attr({"imgw":res.width,"imgh":res.height});
						item.removeClass("weui-uploader__file_status");
						item.append('<div class="delimportimg"><i class="weui-icon-cancel"></i></div>');
						var o={height:res.height,image_id:res.id,image_url:image_url,status:0,user_id:res.user_id,width:res.width,work_id:work_id};
						if(UtilProperty[work_id].image_list==undefined){
							UtilProperty[work_id].image_list=new Array;
						}
						UtilProperty[work_id].image_list.push(o);
						
						if($("#js-file").attr('onfunction') == 0){//在控件上添加图片						
							addimgaetocanvas(image_url,res.id,res.width,res.height);
						}else if($("#js-file").attr('onfunction') == 1){//替换替换图片							
							canvasimgreplace(image_url,res.id,res.width,res.height);
						}else if($("#js-file").attr('onfunction') == 3){//多张上传
							mulitImg.push(image_url);
							
						}		
					notifyimg.splice(0,1);	
					nofyurl=nofyurl.toString();
					if(filesError[nofyurl]!=undefined){
						delete filesError[nofyurl];
					}
					
					break;
				}
			}
		}
	}
	
	if(ele=='uploaderFiles'&&mulitImg.length>0){
		imagelistToObject(mulitImg,work_id,function(){
			if(!$(".notupload").is(":hidden")){
				$(".notupload").hide();
				$(".nextbtn").show();
			}
			if($(".nextbtn").hasClass("disablebtn")){
				$(".nextbtn").removeClass("disablebtn");
			}
			if($("#uploaderInput").hasClass("disablebtn")){
				$("#uploaderInput").removeClass("disablebtn");
			}
			
		})
	}
	
	//上传通知失败
 	notifyError();
	
}

//上传通知失败
function notifyError(){
	var ele;
	if($("#js-file").attr('onfunction') == 0||$("#js-file").attr('onfunction') == 1) {			
		ele="singerFiles";
	}else if($("#js-file").attr('onfunction') == 3) {
		ele="uploaderFiles";
	}
	for(var k=0; k<notifyimg.length; k++){		
		var item=$('#'+ele+' li[name="'+notifyimg[k].image_url+'"]');
		item.find(".la-ball-beat").remove();
		item.append('<div class="weui-uploader__file-content up_refresh cos_refresh"> <i class="fa fa-refresh fa-lg"></i></div><div class="up_refreshtxt"><span>上传失败</span><span>重新上传</span> </div>');
																
	}
	notifyimg=[];
}


//重新上传图片
function refleshUpload(element){
	var ErrorName=element.attr("name");
	if(filesError[ErrorName]!=undefined){
		var file = filesError[ErrorName];
			if (file) {
				element.find(".up_refresh").remove();
				element.find(".up_refreshtxt").remove();
				element.append('<div class="weui-uploader__file-content la-ball-beat la-sm"><i></i><i></i><i></i> </div>');
				var imgname=getNowFormatDate()+'.'+file.name.substring(file.name.lastIndexOf(".")+1).toLowerCase();
				folderName=folder + imgname;
				element.attr("name",folderName);
				if (file.size > 1024 * 1024) {
					taskId = cos.uploadFile(successCallBack, errorCallBack, progressCallBack, bucket, folderName, file, 0, taskReady);//insertOnly==0 表示允许覆盖文件 1表示不允许
				}else{
					// 分片上传过程可能会有 op=upload_slice_list 的 POST 请求返回 404，不会影响上传：https://github.com/tencentyun/cos-js-sdk-v4/issues/16
					cos.uploadFile(successCallBack, errorCallBack, progressCallBack, bucket,folderName, file, 0, taskReady);//insertOnly==0 表示允许覆盖文件 1表示不允许
				
				}
				ErrorName=ErrorName.toString();
				delete filesError[ErrorName];
		}
	}
	
}

//重新上传图片
	$('.weui-uploader__files').on("click",".cos_refresh",function(event){
		event.stopPropagation();
		var element=$(this).closest("li");
		refleshUpload(element);
		
	})